/* 删除带头节点单链表中第一个值为x的结点 */

#include <iostream>
#include "headfun.h"
using namespace std;

// 删除带头节点单链表中第一个值为x的结点
int finddelete(LNode *&C, int x)
{
  LNode *p, *q;
  p = C;
  
  // 找到下一个结点值为10的结点
  while (p->next != NULL)
  {
    if (p->next->data == x)
      break;
    p = p->next;
  }
  
  // 如果找不到，则返回
  if (p->next == NULL)
    return 0;
  
  // 如果找到了
  else
  {
    q = p->next;
    
    // 构造新链接
    p->next = q->next;
    
    // 释放资源
    free(q);
    
    // 成功标记
    return 1;
  }
}

int main()
{
  // 创建带头节点的链表
  LNode *L = head_Linklist();
  
  // 删除首个值为10的节点
  finddelete(L, 10);
  
  // 遍历链表，打印信息
  LNode *q = L->next;
  while (q != NULL)
  {
    cout << q->data << " ";
    q = q->next;
  }
  return 0;
}